home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / PROGRAMM / DB_CLIPP / 2510.ZIP / TRSOURCE.EXE / _TR_ASCP.ASM next >
Assembly Source File  |  1990-10-22  |  2KB  |  60 lines

  1. ;  _TR_ASCP.ASM
  2. ;
  3. ;  by Ralph Davis, Leonard Zerman
  4. ;
  5. ; Placed in the public domain by Tom Rettig Associates, 10/22/1990.
  6. ;
  7.          PUBLIC   __TR_ASCPRINT
  8.  
  9. ;*************************************
  10. _TR_ASCP_TEXT SEGMENT BYTE PUBLIC 'CODE'
  11.          ASSUME   CS:_TR_ASCP_TEXT
  12. ;-------------------------------------
  13. ;
  14. ; SYNTAX:  _tr_ascprint(c);
  15. ;
  16. ;          void _tr_ascprint();
  17. ;          char c;
  18. ;
  19. ; Prints character c a la DEBUG as follows:
  20. ;
  21. ; Less than ' ' (ASCII 20H) prints as '.'
  22. ;
  23. ; Greater than ASCII 7FH: ANDs off high bit
  24.  
  25. ;---------------------------------------------
  26. __TR_ASCPRINT PROC FAR
  27.         PUSH    BP             ; Save caller's BP
  28.         MOV     BP,SP          ; Address stack through BP
  29.         PUSH    AX             ; Save other registers
  30.         PUSH    DX
  31. PRINT_CHAR:
  32.         MOV     DL,[BP+6]      ; Pick up character to display
  33.         CMP     DL,255         ; Is it CHR(255)?
  34.         JE      PRINT_DOT      ; Yes, print a '.'
  35.         CMP     DL,128         ; Is it extended ASCII code (>= 128)?
  36.         JB      IS_SPACE       ; No, is it space or less?
  37.         AND     DL,7FH         ; Greater than 127, AND off high bit
  38. IS_SPACE:
  39.         CMP     DL,' '         ; Is character printable ASCII
  40.                                ;   (space or greater)?
  41.         JB      PRINT_DOT      ; No, print a '.'
  42.         MOV     AH,2           ; Yes, print the character
  43.         INT     21H
  44.         JMP     SHORT EXIT
  45. PRINT_DOT:
  46.         MOV     DL,'.'         ; Print a '.'
  47.         MOV     AH,2
  48.         INT     21H
  49. EXIT:
  50.         POP     DX             ; Restore registers
  51.         POP     AX
  52.         POP     BP
  53.         RET
  54. __TR_ASCPRINT ENDP
  55. ;--------------------------------------------
  56. _TR_ASCP_TEXT   ENDS
  57. ;********************************************
  58.         END
  59.  
  60.